package com.googlecode.totallylazy; import com.googlecode.totallylazy.matchers.NumberMatcher; import org.hamcrest.Matchers; import org.junit.Test; import java.util.ArrayList; import java.util.List; import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.Matchers.nullValue; public class UrlEncodedMessageTest { @Test public void canParseToPairs() throws Exception { List<Pair<String, String>> pairs = UrlEncodedMessage.parse("The+string=%C3%BC%40foo-bar"); assertThat(pairs.size(), NumberMatcher.is(1)); assertThat(pairs.get(0).first(), Matchers.is("The string")); if (!runningOnAMac()) { assertThat(pairs.get(0).second(), Matchers.is("ü@foo-bar")); } } @Test public void canParseToPairsEvenWhenNoValueIsPresent() throws Exception { List<Pair<String, String>> pairs = UrlEncodedMessage.parse("The+string="); assertThat(pairs.size(), NumberMatcher.is(1)); assertThat(pairs.get(0).first(), Matchers.is("The string")); assertThat(pairs.get(0).second(), Matchers.is("")); } @Test public void preservesTheDifferenceBetweenNullAndEmptyString() throws Exception { String original = "one&two="; List<Pair<String, String>> pairs = UrlEncodedMessage.parse(original); assertThat(pairs.size(), NumberMatcher.is(2)); assertThat(pairs.get(0).first(), Matchers.is("one")); assertThat(pairs.get(0).second(), nullValue()); assertThat(pairs.get(1).first(), Matchers.is("two")); assertThat(pairs.get(1).second(), Matchers.is("")); assertThat(UrlEncodedMessage.toString(pairs), Matchers.is(original)); } @Test public void canConvertToString() throws Exception { if (runningOnAMac()) { return; } List<Pair<String, String>> pairs = new ArrayList<Pair<String, String>>() {{ add(Pair.pair("The string", "ü@foo-bar")); }}; String result = UrlEncodedMessage.toString(pairs); assertThat(result, Matchers.is("The+string=%C3%BC%40foo-bar")); } private static boolean runningOnAMac() { return System.getProperty("os.name").contains("Mac OS"); } }